package com.niodata.dp.plugin.core;

import java.io.IOException;

public interface PluginContextFactory {

  /**
   * get or create context.
   *
   * @param pluginClass pluginclass
   * @param <T> plugin class
   * @return context
   * @throws IOException e
   */
  public <T> PluginContext getOrCreateContext(
        Class<? extends AbstractDpTaskPlugin> pluginClass) throws IOException;

  /**
   * create remote context in formal environment.
   */
  public PluginContext createRemoteContext(Class<? extends AbstractDpTaskPlugin> pluginClass)
        throws IOException;

  /**
   * create local context in debug environment.
   */
  public PluginContext createLocalContext(Class<? extends AbstractDpTaskPlugin> pluginClass)
        throws IOException;

}
